table of contents
EXPR(1) | Narzędzia powłokowe GNU 2.0 | EXPR(1) |
NAZWA¶
expr - wykonaj wyrażenia
SKŁADNIA¶
expr wyrażenie...
expr [--help] [--version]
OPIS¶
Ta strona podręcznika man opisuje polecenie expr w wersji GNU.
expr wykonuje obliczenie i zapisuje rezultat na standardowe wyjście. Każdy żeton wyrażenia musi być oddzielnym argumentem. Operandy mogą być liczbami lub ciągami znaków. Łańcuchów znaków nie cytuje się dla expr, choć możesz być zmuszonym do tego, by ochronić je przed powłoką (znaki i łańcuchy o specjalnym znaczeniu dla powłoki, np. spacja). expr rzutuje wszystko znajdujące się po stronie operandowej na integer lub łańcuch, zależnie od rodzaju operacji.
Operatory mogą być podawane jako symbole wrostkowe lub kluczowe słowa przedrostkowe. Do grupowania można w zwykły sposób korzystać z nawiasów. (nawiasy muszą być jednak cytowane, by ochronić je przed rozwinięciem przez powłokę).
OPERACJE¶
Operatory (w kolejności rosnącego priorytetu) to:
Wyrażenia łańcuchowe¶
expr obsługuje dopasowywanie wzorców i inne operatory łańcuchowe. Mają one niższy priorytet niż operatory numeryczne czy relacyjne (w następnych sekcjach).
- łańcuch : regex
- Dokonuje porównania wzorców. Argumenty są rzutowane
na łańcuchy, a drugi jest uważany za (podstawowe, a
la GNU `grep') wyrażenie regularne, poprzedzone niejawnym
`^'. Następnie pierwszy argument jest dopasowywany do tego
wyrażenia regularnego. Jeśli porównanie jest
pomyślne a wyrażenie regularne korzysta z `\(' i
`\)', to wyrażenie : zwraca
część łańcucha dopasowaną tym
podwyrażeniem. W przeciwnym zwracana jest liczba dopasowanych
znaków.
Jeśli porównanie zawiedzie, operator `:' zwraca łańcuch pusty jeśli w wyrażeniu regularnym użyto `\(' i `\)' lub zero w przeciwnym wypadku.
Tylko pierwsza para nawiasów `\(' i `\)' jest istotna dla zwracanej wartości. Dodatkowe mają znaczenie tylko przy grupowaniu operatorów wyrażenie regularnego.
W wyrażeniu regularnym znaki `\+', `\?' i `\|' są operatorami dopasowującymi odpowiednio jedno lub więcej, zero lub jedno wystąpienie lub alternatywy rozłączne. Pochodzące z SunOS i inne implementacje expr traktują je jak zwykłe znaki. POSIX dopuszcza oba zachowania.
- match łańcuch regex
- Alternatywny sposóba porównywania wzorców. Jest to identyczne z `łańcuch : regex'.
- substr łańcuch pozycja długość
- Zwraca łańcuch będący częścią łańcucha, zaczynającą się na pozycji i o długości najwyżej długość. Jeśli pozycja lub długość jest niedodatnie lub nienumeryczne, zwracany jest łańcuch pusty.
- index łańcuch klasa-znakowa
- Zwraca pierwszą pozycję w łańcuchu gdzie znaleźć można pierwszy znak z klasy-znakowej. Jeśli nie znaleziono żadnego znaku z klasy-znakowej, zwraca 0.
- length łańcuch
- Zwraca długość łańcucha.
- quote token
- Interpretuje token jako łańcuch, nawet jeśli jest on słowem kluczowym, jak match lub operatorem jak `/'. Umożliwia to testowanie `expr length quote "$x"' lub `expr quote "$x" : '.*/\(.\)'' i otrzymanie prawidłowego wyniku nawet jeśli wartością $X będzie, na przykład, `/' czy `index'. Ten operator jest rozszerzeniem GNU. Jest wyłączany, jeśli ustawiona jest zmienna środowiska POSIXLY_CORRECT.
Chcąc, by expr interpretował słowa kluczowe jako łańcuchy należy użyć operatora quote.
Wyrażenia numeryczne¶
expr obsługuje zwyczajowe operatory numeryczne, w kolejności rosnącego priorytetu. Operatory łańcuchowe (poprzednia sekcja) mają niższy priorytet, zaś łączniki (connectives) (następna sekcja) wyższy.
- +, -
- Dodawanie i odejmowanie. Obydwa argumenty są rzutowane na liczby. Jeśli to niemożliwe, pojawia się błąd.
- *, /, %
- Mnożenie, dzielenie, reszta z dzielenia. Obydwa argumenty są rzutowane na liczby. Jeśli to niemożliwe, pojawia się błąd.
Relacje¶
expr obsługuje zwyczajowe łączniki i relacje logiczne. Mają one wyższy priorytet niż operatory łańcuchowe lub numeryczne, opisane w poprzednich sekcjach. Oto ich lista, poczynając od operatorów o najmniejszym priorytecie.
- |
- Zwraca swój pierwszy argument w wypadku gdy jest niezerowy i niepusty, lub drugi w przeciwnym wypadku. Jest to zwykła operacja `or'.
- &
- Zwraca swój pierwszy argument w wypadku gdy żaden z argumentów nie jest zerowy ani pusty. W przeciwnym wypadku zwraca zero.
- <, <=, =, ==, !=, >=, >
- Porównuje argumenty i zwraca 1 jeśli relacja jest prawdziwa lub zero w przeciwnym wypadku. (== jest synonimem =.) expr próbuje rzutować obydwa argumenty na liczby i dokonać porównania numerycznego; jeśli to zawiedzie, próbuje porównania leksykalnego.
Nawiasy są używane zazwyczaj do grupowania. Słowa kluczowe nie mogą być używane jako napisy.
OPCJE¶
Gdy uruchomi się GNU expr z jednym argumentem, rozpoznawane są następujące opcje:
PRZYKŁADY¶
Kilka przykładów, łącznie z cytowaniem metaznaków powłoki:
Dodanie 1 do zmiennej powłokowej, w powłoce zgodnej z powłoką Bourne'a: a:
-
a=`expr $a + 1`
Poniższe polecenie może zostać użyte do wydrukowania niekatalogowej części nazwy pliku, przechowywanej w zmiennej a (część ta nie powinna zawierać `/'):
-
expr $a : '.*/\(^.*\)' '^|' $a
Zauważ cytowane metaznaki powłoki.
Przykład pokazujący, że `\+' jest operatorem:
-
expr aaa : 'a\+'
=> 3
Nieco innych:
-
expr abc : 'a\(.\)c'
=> b
expr index abcdef cz
=> 3
expr index index a
error--> expr: syntax error
expr index quote index a
=> 0
KOD ZAKOŃCZENIA¶
expr zwraca następujący kod zakończenia:
- 0
- jeśli wyrażenie nie jest ani null, ani 0.
- 1
- jeśli wyrażenie jest null lub 0,
- 2
- dla nieprawidłowych wyrażeń.
ZGŁASZANIE BŁĘDÓW¶
Błędy proszę zgłaszać, w jęz.ang., do <bug-sh-utils@gnu.org>.
COPYRIGHT¶
Copyright © 1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
ZOBACZ TAKŻE¶
OD TŁUMACZA¶
Zaktualizowano i poszerzono wg dokumentacji Texinfo dla narzędzi powłokowych GNU wersji 2.0.
FSF | maj 2000 |